{
  "cells": [
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "RWK755-FnxSb"
      },
      "source": [
        "<font face=\"XB Zar\" size=5><div dir=rtl align=center>\n",
        "<font face=\"IranNastaliq\" size=5>\n",
        "به نام خدا\n",
        "</font>\n",
        "<br>\n",
        "<font size=3>\n",
        "دانشگاه صنعتی شریف - دانشکده مهندسی کامپیوتر\n",
        "</font>\n",
        "<br>\n",
        "<font color=blue size=5>\n",
        "مقدمه‌ای بر یادگیری ماشین\n",
        "</font>\n",
        "\n",
        "<hr/>\n",
        "<font color=red size=6>\n",
        "فصل دوم:مرور روش‌های کلاسیک یادگیری ماشین \n",
        "<br>\n",
        "مبحث:خطای عمومی سازی\n",
        "</font>\n",
        "<br>\n",
        "نویسنده:‌ حدیث احمدیان\n",
        "<hr>"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "ffDQcr6isJk4"
      },
      "source": [
        "<font face=\"XB Zar\" size=4><div dir=rtl>\n",
        "<font color=\"red\" size=5>1.مفاهیم اولیه وعمومی سازی</font>\n"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "O70q6bhSv_lt"
      },
      "source": [
        "<font face=\"XB Zar\" size=4><div dir=rtl>\n",
        "تعاریف زیر را در نظر بگیرید\n",
        "<br>\n",
        "**داده‌های آموزش(train):**\n",
        " مجموعه داده‌هایی که قرار است مدل روی آن‌ها آموزش ببیند.\n",
        "<br>\n",
        "**تابع هزینه :**  میانگین خطا (loss) روی داده‌های آموزش.\n",
        "<br>\n",
        "**داده های‌تست:** مجموعه داده‌هایی که پس از آموزش مدل برای سنجیدن مدل استفاده میشود. (برای سنجش یک مدل میتوان از معیار‌هایی مانند دقت استفاده کرد)\n",
        "<br>\n",
        "<br>\n",
        "**مفهوم خطای عمومی‌سازی :**\n",
        "<br>\n",
        "اگر بتوانیم مدلی را پیدا کنیم که خطا روی داده‌های آموزش را کمینه کند آیا می‌توانیم ادعا کنیم که به نتیجه‌ی مطلوب رسیده ایم؟\n",
        "<br>\n",
        "هدف اصلی ما از اموزش این مدل چه بوده‌است؟ ما می‌خواهیم الگوی موجود در داده‌های آموزش را پیدا کنیم تا بتوانیم با استفاده از آن، برای داده‌هایی که تابحال ندیده‌ایم پیش بینی‌های لازم را انجام دهیم پس برای ما کافی نیست که خطا روی داده‌های آموزش کمینه باشد بلکه خطا روی داده‌هایی که مدل برای آموزش دیدن از آنها استفاده نکرده‌است (داده های تست) نیز باید کم باشد به عبارت دیگر مدل باید توانایی عمومی‌سازی را داشته باشد و خطای عمومی‌سازی آن کم باشد.\n",
        "<br>\n",
        "<br>\n",
        "پس به طور خلاصه :\n",
        "<br>\n",
        "مدل باید علاوه بر پیش بینی صحیح داده‌های آموزش، بتواند برای نمونه‌های جدید نیز قابل عمومی‌سازی باشد.\n",
        "<br>\n",
        "<br>\n",
        "**داده های validation :** تا این مرحله لزوم و جود داده‌های تست و آموزش واضح شد.  دسته‌ی دیگری از داده را نیز میتوان جدا کرد و به منظور تنظیم هایپرپارامتر‌هایی مانند learning rate از آن ها استفاده کرد، به این مجموعه داده‌ها validation می‌گویند."
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "9qYbpSqewI74"
      },
      "source": [
        "<font face=\"XB Zar\" size=4><div dir=rtl>\n",
        "<font color=\"red\" size=5>2.بایاس و واریانس</font>\n"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "Iw8mBW4swI75"
      },
      "source": [
        "<font face=\"XB Zar\" size=4><div dir=rtl>\n",
        "تعاریف زیر را در نظر بگیرید :\n",
        "<br>\n",
        "بایاس تفاوت بین Expected Value ی estimator و مقدار پارامتری است که می‌خواهیم آن را تخمین بزنیم.\n",
        "<br>\n",
        "<div dir=ltr>\n",
        "$Bias(\\hat{\\theta})=\\mathbb{E}[\\hat{\\theta}]-\\theta$\n",
        "<div dir=rtl>\n",
        "<br>\n",
        "<br>\n",
        "واریانس نیز به صورت زیر قابل تعریف است. \n",
        "<br>\n",
        "<div dir=ltr>\n",
        "$Variance(\\hat{\\theta})=\\mathbb{E}[(\\mathbb{E}[\\hat{\\theta}]-\\hat{\\theta})^2]$    \n",
        "<div dir=rtl>\n",
        "<br>\n",
        "اگر S را خطای squared loss در نظر بگیریم خواهیم داشت :\n",
        "<br>\n",
        "<div dir=ltr>\n",
        "$S=(y-\\hat{y})^2 = (y-\\mathbb{E}[\\hat{y}]+\\mathbb{E}[\\hat{y}]-\\hat{y})^2$\n",
        "<br>\n",
        "$=(y-\\mathbb{E}[\\hat{y}])^2+(\\mathbb{E}[\\hat{y}]-\\hat{y})^2+2(y-\\mathbb{E}[\\hat{y}])(\\mathbb{E}[\\hat{y}]-\\hat{y})$\n",
        "<div dir=rtl>\n",
        "<br>\n",
        "<br>\n",
        " با اعمال امید ریاضی  (Expected value)  به هر دو سمت معادله خواهیم داشت:\n",
        "<br>\n",
        "<div dir=ltr>\n",
        "$\\mathbb{E}[S]=\\mathbb{E}[(y-\\hat{y})^2]=(y-\\mathbb{E}[\\hat{y}])^2+\\mathbb(E)[(\\mathbb{E}[\\hat{y}]-\\hat{y})^2]=[Bias]^2+Variance$\n",
        "<div dir=rtl>\n",
        "<br>\n",
        "<br>\n",
        "پس میتوان دید Mean squared loss قابل تجزیه به بایاس و ورایانس است.\n",
        "<br>\n"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "82WX4TgqwI76"
      },
      "source": [
        "<font face=\"XB Zar\" size=4><div dir=rtl>\n",
        "<font color=\"red\" size=5>3. overfit و underfit شدن</font>\n"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "SUDfS_QqwI76"
      },
      "source": [
        "<font face=\"XB Zar\" size=4><div dir=rtl>\n",
        "<font color=\"red\" size=4>3-1 Underfitting</font>\n",
        "<br>\n",
        "<br>\n",
        "<font face=\"XB Zar\" size=4><div dir=rtl>\n",
        "1.هنگامی اتفاق می‌افتد که مدل انتخاب شده برای یادگرفتن ساختار و الگوی داده‌ها بیش از حد ساده است.\n",
        "<br>\n",
        "2.در این حالت واریانس کم و بایاس زیاد است.\n",
        "<br>\n",
        "3.خطا روی مجموعه‌ی آموزش و تست زیاد است.\n",
        "<br>\n",
        "<br>\n",
        "راه حل‌ها :مدل‌های پیچیده تر، مهندسی ویژگی‌ها و ویژگی‌های بهتر و کاهش قیود محدود کننده‌ی مدل\n",
        "<br>\n",
        "<br>\n",
        "<font face=\"XB Zar\" size=4><div dir=rtl>\n",
        "<font color=\"red\" size=4>3-2 Overfitting</font>\n",
        "<br>\n",
        "<br>\n",
        "1.هنگامی اتفاق می‌افتد که مدل بیش از حد پیچیده است (با توجه به نوع داده‌ها و نویز موجود در ان‌ها ) و در نتیجه صرف نظر از الگوی پنهان در داده‌ها، میتواند داده‌های آموزش را کاملا حفظ کند.\n",
        "<br>\n",
        "2.در این حالت بایاس کم و واریانس زیاد است\n",
        "<br>\n",
        "3.در این حالت خطا روی داده‌های آموزش بسیار کم است اما روی داده‌های تست خطا زیاد است (در واقع خطای عمومی‌سازی زیاد است و مدل قدرت عمومی‌سازی ندارد)\n",
        "<br>\n",
        "راه حل‌ها : مدل های ساده تر، داده های بیشتر، کاهش نویز و منظم‌سازی\n",
        "<br>\n",
        "<br>\n",
        "<font face=\"XB Zar\" size=4><div dir=rtl>\n",
        "<font color=\"red\" size=4>3-3 نتیجه‌گیری</font>\n",
        "<br>\n",
        "<br>\n",
        "1.در یک مدل مناسب که نه آندرفیت شده و نه اورفیت، بایاس و واریانس هر دو کم هستند.\n",
        "<br>\n",
        "2.در یک مدل مناسب خطا روی داده‌های تست و آموزش هردو میزان کم و قابل قبولی است.\n",
        "<br>\n",
        "<br>\n",
        "<font color=\"blue\" size=4>جمع بندی:</font>"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "Vml-ez3ZwI78"
      },
      "source": [
        "![Alt Text](https://machinelearningknowledge.ai/wp-content/uploads/2019/05/Overfitting-and-Underfitting-Animation.gif)"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "rgPnZcrywI8E"
      },
      "source": [
        "<font face=\"XB Zar\" size=4><div dir=rtl>\n",
        "<font color=\"red\" size=5>4. مثال عملی</font>"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "5mykfsJiwI8F"
      },
      "source": [
        "<font face=\"XB Zar\" size=4><div dir=rtl>\n",
        "در زیر قطعه کدی آمده که هدف آن به نمایش گذاشتن مفاهیم مطرح شده در بالا است.\n",
        "<br>\n",
        "<br>\n",
        "**ساخت سمپل ها :**\n",
        "<br>  \n",
        "فرض کنید یک سری سمپل داریم که در واقع از یک تابع سینوسی گرفته شدده‌اند (البته ما در ابتدا این را نمی‌دانیم و درواقع فقط سمپل ها را داریم و هدف ما این است که از به سمپل ها مدلی فیت کنیم که به بهترین شکل بتواند تابع اصلی را تقریب بزند.\n",
        "<br>\n",
        "<br>\n",
        "نکته‌ی قابل ذکر این است که مانند دنیای واقعی سمپل ها مقدار کمی نسبت به مقدار اصلی‌شان نویزاندازه گیری دارند. وجود نویز میتواند باعث اورفیت شدن مدل های بیش از حد پیچیده شود پس در ادامه باید مدل خود را با پیچیدگی مناسبی انتخاب کنیم.\n"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 300
        },
        "id": "ca0QgNvPxkUp",
        "outputId": "f1651ba8-b958-4ff6-9151-56ebcf810e59"
      },
      "outputs": [
        {
          "data": {
            "text/plain": [
              "[<matplotlib.lines.Line2D at 0x21e440a01c8>]"
            ]
          },
          "execution_count": 43,
          "metadata": {},
          "output_type": "execute_result"
        },
        {
          "data": {
            "image/png": "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\n",
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ]
          },
          "metadata": {
            "needs_background": "light"
          },
          "output_type": "display_data"
        }
      ],
      "source": [
        "import random\n",
        "import matplotlib.pyplot as plt\n",
        "import numpy as np\n",
        "\n",
        "def function(x):\n",
        "    return np.sin(x)\n",
        "\n",
        "X_tr=random.sample(list(np.arange(0, 10, 0.1)), 30)\n",
        "Y_tr=[ function(x)+random.uniform(-0.3, 0.3) for x in X_tr]\n",
        "plt.scatter(X_tr,Y_tr,color=\"red\")\n",
        "X=np.arange(0, 10, 0.1)\n",
        "Y=[ function(x) for x in X]\n",
        "plt.plot(X,Y,color=\"green\")"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "h8s4mPmKwI8G"
      },
      "source": [
        "<font face=\"XB Zar\" size=4><div dir=rtl>\n",
        "حال سه مدل چند‌جمله‌ای را به سمپل‌های گرفته شده فیت می‌کنیم. تفاوت این چندجمله‌ای‌ها درجه‌ی آن‌هاست. در واقع هرچقدر درجه‌ی مدل ما بیشتر باشد پیچیدگی بیشتری دارد.\n",
        "<br>\n",
        "<br>\n",
        "نکته : برای فیت کردن چندجمله‌ای به نمونه‌ها در قطعه کد‌های زیر از توابع numpy استفاده شده‌است که از روش‌های جبری استفاده می‌کند و صرفا برای نشان دادن چگونگی نتیجه ی فیت شدن از آن استفاده شده‌است. برای مقاصد لرنینگ و فیت کردن مدل‌های چندجمله‌ای یا .... با رویکرد‌های لرنینگ، کتابخوانه های دیگری قابل استفاده هستند."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 265
        },
        "id": "iEidetmPxmEY",
        "outputId": "8171a1ea-a768-4166-adf5-9f28e01b6b15"
      },
      "outputs": [
        {
          "data": {
            "image/png": "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\n",
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ]
          },
          "metadata": {
            "needs_background": "light"
          },
          "output_type": "display_data"
        }
      ],
      "source": [
        "plt.scatter(X_tr,Y_tr,color=\"yellow\")\n",
        "X=np.arange(0,9, 0.1)\n",
        "C=[\"blue\",\"red\",\"cyan\"]\n",
        "k=-1\n",
        "for deg in [3,6,17]:\n",
        "  k+=1\n",
        "  Y=[]\n",
        "  res=np.polyfit(X_tr, Y_tr, deg, rcond=None, full=False, w=None, cov=False)\n",
        "  for x in X:\n",
        "    y=0\n",
        "    for i in range(deg):\n",
        "      y+=(x**(deg-i)*res[i])\n",
        "    Y.append(y)\n",
        "  plt.plot(X,Y,color=C[k],label=\"deg=\"+str(deg))\n",
        "\n",
        "X=np.arange(0, 10, 0.1)\n",
        "Y=[ function(x) for x in X]\n",
        "plt.plot(X,Y,color=\"green\",label=\"real function\")\n",
        "plt.legend()\n",
        "plt.show()"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "WvV6dp93wI8G"
      },
      "source": [
        "<font face=\"XB Zar\" size=4><div dir=rtl>\n",
        "میتوان دید تابع درجه 3 پیچیدگی کافی برای بیان رابطه‌ی بین سمپل‌ها و درواقع یافتن الگوی بین داده‌ها را ندارد از همین جهت این مدل آندرفیت شده‌است و خطای آموزش بالاست و هم چنین خطای عمومی‌سازی نیز بالاست زیرا مدل ما از تابع اصلی بسیار دور است.\n",
        "<br>\n",
        "<br>\n",
        "تابع درجه 17 پیچیدگی زیادی دارد و به همین علت توانسته به خوبی از اکثر داده‌های آموزشی دقیقا بگذرد و خطای آموزش بسیار پایین است. اما همانطور که مشخص است این مدل قدرت عمومی‌سازی خوبی ندارد و خطای عمومی‌سازی روی آن بالا خواهد بود و مدل تقریب درستی از تابع اصلی نیست. این به این معناست که مدل اورفیت شده است و در واقع میتوان گفت به جای یافتن الگوی بین داده‌ها تا حد ممکن آن‌ها را به طور دقیق حفظ کرده است.\n",
        "<br>\n",
        "<br>\n",
        "بر خلاف دو مدل بالا، مدل درجه 6 از پیچیدگی مناسبی برخوردار است و ضمن اینکه به خوبی از نزدیکی داده‌های آموزشی گذشته و خطای آموزش در آن مقدار کمی دارد، تابع اصلی را نیز به خوبی تقریب زده و قدرت عمومی‌سازی خوبی دارد."
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "a4G-F6MkWGG7"
      },
      "source": [
        "<font face=\"XB Zar\" size=4><div dir=rtl>\n",
        "<font  size=5>منابع :</font>\n",
        "\n",
        "https://machinelearningknowledge.ai/overfitting-and-underfitting-in-machine-learning-animated-guide-for-beginners/"
      ]
    }
  ],
  "metadata": {
    "colab": {
      "provenance": []
    },
    "kernelspec": {
      "display_name": "Python 3",
      "language": "python",
      "name": "python3"
    },
    "language_info": {
      "codemirror_mode": {
        "name": "ipython",
        "version": 3
      },
      "file_extension": ".py",
      "mimetype": "text/x-python",
      "name": "python",
      "nbconvert_exporter": "python",
      "pygments_lexer": "ipython3",
      "version": "3.7.4"
    }
  },
  "nbformat": 4,
  "nbformat_minor": 0
}